package com.ssy.lingxi.purchase.service.needplan;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.purchase.api.dto.request.*;
import com.ssy.lingxi.purchase.api.dto.response.NeedPlanListResponse;
import com.ssy.lingxi.purchase.api.dto.response.NeedPlanResponse;
import com.ssy.lingxi.purchase.entity.needplan.NeedPlanDetail;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 采购能力 - 需求计划管理 - 业务处理类
 * @author fhj
 * @date 2021/02/26
 * @version 2.0.0
 * */
public interface NeedPlanService {

    Wrapper<List<Map<String, Object>>> inner();

    Wrapper<PageData<NeedPlanListResponse>> allList(NeedPlanListRequest qo, UserLoginCacheDTO user);

    Wrapper<PageData<NeedPlanListResponse>> toBeAddList(NeedPlanListRequest qo, UserLoginCacheDTO user);

    Wrapper<PageData<NeedPlanListResponse>> toBeFirstExamList(NeedPlanListRequest qo, UserLoginCacheDTO user);

    Wrapper<PageData<NeedPlanListResponse>> toBeSecondExamList(NeedPlanListRequest qo, UserLoginCacheDTO user);

    Wrapper<PageData<NeedPlanListResponse>> toBeSubmitList(NeedPlanListRequest qo, UserLoginCacheDTO user);

    Wrapper<PageData<NeedPlanListResponse>> toBeCollectList(NeedPlanListRequest qo, UserLoginCacheDTO user);
    
    Wrapper<NeedPlanResponse> details(CommonIdRequest dto, UserLoginCacheDTO user);

    Wrapper<PageData<NeedPlanDetail>> needPlanDetail(CommonIdPageRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> add(AddNeedPlanRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> update(UpdateNeedPlanRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> delete(CommonIdRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> submitExam(CommonIdRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> firstExam(CommonExamRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> secondExam(CommonExamRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> submit(CommonIdRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> sendBack(CommonExamRequest dto, UserLoginCacheDTO user);

    Wrapper<Void> collect(CommonIdListRequest dto, UserLoginCacheDTO user);

    Wrapper<String> check(MultipartFile file);

    Wrapper<List<NeedPlanExcelRequest>> excel(MultipartFile file);
}
